// 很简单的执行上下文this指向问题
var User = {
  count: 1,
  getCount: function () {
    return this.count
  }
}
console.log(User.getCount()); // 1
var func = User.getCount   // 为什么这样写 保存函数并不执行(其实就是函数表达式形式) 在要执行的地方在执行 var func = function(){return this.count}
console.log(func()); // undefined

// 深入 怎样保证User总是能访问到func的上下文 输出1呢
// addition bind的理解
var func = User.getCount.bind(User)
console.log(func());


// 继续深入 这个方法在老版本的浏览器不起作用，怎么解决
// addition 理解apply和call非常重要 顶不住了
Function.prototype.bind = Function.prototype.bind || function (context) {
  var self = this
  return function () {
    return self.apply(context, arguments)
  }
}


// 终于结束了 煎熬呀